Overview¶
What is Decompose?¶
Decompose is a Kotlin Multiplatform library for breaking down your code into lifecycle-aware business logic components (aka BLoC), with routing functionality and pluggable UI (Compose, Android Views, SwiftUI, Kotlin/React, etc.).
Supported targets¶
android
,jvm
js
(bothIR
andLegacy
modes)iosX64
,iosArm64
,iosSimulatorArm64
tvosArm64
,tvosX64
,tvosSimulatorArm64
watchosArm32
,watchosArm64
,watchosX64
,watchosSimulatorArm64
macosX64
,macosArm64
Why Decompose?¶
- Decompose draws clear boundaries between UI and non-UI code, which gives the following benefits:
- Better separation of concerns
- Pluggable platform-specific UI (Compose, SwiftUI, Kotlin/React, etc.)
- Business logic code is testable with pure multiplatform unit tests
- Proper dependency injection (DI) and inversion of control (IoC) via constructor, including but not limited to type-safe arguments.
- Shared navigation logic
- Lifecycle-aware components
- Components in the back stack are not destroyed, they continue working in background without UI
- Components and UI state preservation (mostly useful in Android)
- Instances retaining (aka ViewModels) over configuration changes (mostly useful in Android)